/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2021，所有权利保留。
 * <p>
 * 项目名：	design-pattern 文件名：	LazySingleton 模块说明： 修改历史： 2021/7/20 0020 - lizhixing - 创建。
 */
package com.lovely602.design.creation.singleton;

/**
 * 懒汉单例模式 如果编写的是多线程程序，则不要删除上例代码中的关键字 volatile 和 synchronized，否则将存在线程非安全的问题。
 * 如果不删除这两个关键字就能保证线程安全，但是每次访问时都要同步，会影响性能，且消耗更多的资源，这是懒汉式单例的缺点
 *
 * @author lizhixing
 */
public class LazySingleton {

  /**
   * 保证instance在所有线程中同步
   */
  private static volatile LazySingleton instance = null;

  private LazySingleton() {
    // private 避免在外部呗实例化
  }

  public static synchronized LazySingleton getInstance() {
    // getInstance方法前加同步

    if (instance == null) {
      instance = new LazySingleton();
    }
    return instance;
  }

}
